importPackage(Packages.de.elo.ix.client);
//@include lib_Class.js
//@include lib_sol.common.WfUtils.js
//@include lib_sol.common.ix.ServiceBase.js
var logger = sol.create("sol.Logger", { scope: "sol.common.ix.services.GetWorkflowMetadata" });
/**
* Retrieves some metadata of a workflow.
*
* # As IX service call
*
* sol.common.IxUtils.execute('RF_sol_common_service_GetWorkflowMetadata', {
* flowId: "4711"
* });
*
* Returns the workflow metadata:
*
* {
* flowId: 4711, // the workflow id
* name: "Musterflow", // the workflow name
* objId: "0815", // the objId
* objName: "Testdoc", // the objects name
* status: "SUCCESS", // the workflow status
* templateId: 23, // the template id
* templateName: "Muster", // the template name
* ownerId: 0, // the owner id
* ownerName: "Admin", // the owner name
* activeNodes: [ // a list of all active nodes
* {
* nodeId: 1, // id of the active node
* nodeName: "node 1", // name of the active node
* userId: 0, // id of the node user
* userName: "Admin" // name of the node user
* }
* ]
* }
*
* @author PZ, ELO Digital Office GmbH
* @version 1.0
*
* @eloix
* @requires sol.common.WfUtils
* @requires sol.common.ix.RfUtils
*/
sol.define("sol.common.ix.services.GetWorkflowMetadata", {
extend: "sol.common.ix.ServiceBase",
requiredConfig: ["flowId"],
/**
* @cfg {String} flowId
*/
/**
* @cfg {Boolean} [inclFinished=true] (optional)
*/
initialize: function (config) {
var me = this;
me.$super("sol.common.ix.ServiceBase", "initialize", [config]);
me.inclFinished = (me.inclFinished === false) ? false : true;
},
/**
* Retrieves the metadata
* @return {Object}
*/
process: function () {
var me = this,
wfUtils = sol.common.WfUtils,
result = {},
wfDiagram, wfStatus, activeNodes;
try {
wfDiagram = wfUtils.getWorkflow(me.flowId, { inclFinished: me.inclFinished });
wfStatus = wfUtils.getWorkflowStatus(wfDiagram);
result.flowId = wfDiagram.id;
result.name = wfDiagram.name;
result.objId = wfDiagram.objId;
result.objName = wfDiagram.objName;
result.status = wfStatus;
result.templateId = wfDiagram.templateId;
result.templateName = wfDiagram.templateName;
result.ownerId = wfDiagram.ownerId;
result.ownerName = wfDiagram.ownerName;
activeNodes = wfUtils.getActiveNodes(wfDiagram);
if (activeNodes && (activeNodes.length > 0)) {
result.activeNodes = activeNodes.map(function (node) {
return {
nodeId: node.id,
nodeName: node.name,
userId: node.userId,
userName: node.userName
};
});
}
} catch (ex) {
me.logger.error("error retrieving workflow metadata", ex);
}
return result;
}
});
/**
* @member sol.common.ix.services.GetWorkflowMetadata
* @method RF_sol_common_service_GetWorkflowMetadata
* @static
* @inheritdoc sol.common.ix.ServiceBase#RF_ServiceBaseName
*/
function RF_sol_common_service_GetWorkflowMetadata(iXSEContext, args) {
logger.enter("RF_sol_common_service_GetWorkflowMetadata", args);
var params = sol.common.ix.RfUtils.parseAndCheckParams(iXSEContext, arguments.callee.name, args, "flowId"),
service, result;
service = sol.create("sol.common.ix.services.GetWorkflowMetadata", params);
result = sol.common.JsonUtils.stringifyAll(service.process());
logger.exit("RF_sol_common_service_GetWorkflowMetadata", result);
return result;
}